C语言网络编程实战100例
📚 共计 100 章节
01
网络基础概念
TCP/IP协议栈、OSI七层模型、IP地址与端口号、字节序
协议栈
字节序
02
Socket基础
什么是Socket、流式/数据报、sockaddr_in结构
套接字
地址结构
03
创建Socket
socket()详解、协议族、类型选择、错误处理
socket()
错误码
04
绑定地址
bind()详解、端口绑定、IP绑定、失败原因
bind
端口
05
监听连接
listen()详解、backlog参数、被动/主动套接字
listen
backlog
06
接受连接
accept()详解、阻塞与非阻塞、获取客户端地址
accept
阻塞
07
发起连接
connect()详解、超时处理、非阻塞connect
connect
超时
08
发送数据
send()/sendto()、阻塞与非阻塞发送
send
sendto
09
接收数据
recv()/recvfrom()、接收缓冲区管理
recv
缓冲区
10
关闭连接
close() vs shutdown()、优雅关闭、SO_LINGER
close
shutdown
11
TCP回射服务器
简单回射服务器,客户端发送什么返回什么
回射
TCP
12
TCP回射客户端
对应客户端,连接服务器并发送数据
客户端
回射
13
多进程并发服务器
fork()创建子进程处理多客户端
fork
并发
14
多线程并发服务器
pthread_create()创建线程处理多客户端
pthread
线程
15
select模型
select()详解、fd_set操作、最大fd限制
select
I/O复用
16
poll模型
poll()详解、pollfd结构、与select对比
poll
事件驱动
17
epoll模型 (Linux)
epoll_create/ctl/wait、ET与LT模式
epoll
边缘触发
18
I/O复用综合对比
select vs poll vs epoll 性能、适用场景
对比
性能
19
非阻塞I/O
fcntl()设置非阻塞、非阻塞connect/accept
非阻塞
fcntl
20
信号驱动I/O
SIGIO信号、fcntl设置属主、异步通知
SIGIO
异步
21
异步I/O (AIO)
POSIX AIO接口、aio_read/write、回调
AIO
回调
22
UDP通信基础
UDP特点、与TCP区别、编程模型
UDP
无连接
23
UDP回射服务器
使用recvfrom/sendto实现回射
UDP
回射
24
UDP回射客户端
使用sendto/recvfrom实现客户端
UDP
客户端
25
UDP广播
广播地址、SO_BROADCAST、广播接收
广播
setsockopt
26
UDP多播
多播地址、IGMP、加入多播组
多播
IGMP
27
UDP组播收发
多播发送/接收、TTL设置
组播
TTL
28
原始套接字
SOCK_RAW、IP_HDRINCL、构造IP包
原始套接字
IP
29
Ping程序实现
原始套接字实现ping、ICMP解析
Ping
ICMP
30
Traceroute实现
原始套接字、TTL递增技巧
Traceroute
TTL
31
TCP状态转换
状态机、三次握手、四次挥手状态
状态机
TCP
32
TIME_WAIT状态
2MSL等待、SO_REUSEADDR端口重用
TIME_WAIT
重用
33
TCP粘包问题
粘包原因、定长/分隔符/长度前缀
粘包
解决
34
自定义应用层协议
消息头+消息体设计
协议
设计
35
协议缓冲区设计
环形缓冲区、动态扩展、内存管理
缓冲区
环形
36
超时控制
SO_RCVTIMEO/SO_SNDTIMEO、alarm信号
超时
alarm
37
心跳机制
应用层心跳、超时重连、Keep-Alive
心跳
Keep-Alive
38
断线重连
断线检测、自动重连、指数退避
重连
退避
39
DNS解析
gethostbyname、getaddrinfo、DNS缓存
DNS
解析
40
网络字节序转换
htonl/htons/ntohl/ntohs、inet_pton
字节序
转换
41
IP地址转换
inet_addr旧、inet_pton新
IP
inet_pton
42
网络接口查询
getifaddrs()获取本机IP、接口信息
ifaddrs
接口
43
套接字选项
getsockopt/setsockopt、SO_REUSEADDR等
选项
setsockopt
44
TCP_NODELAY选项
Nagle算法、关闭Nagle、适用场景
Nagle
无延迟
45
TCP_CORK选项
CORK与Nagle区别、数据累积发送
CORK
累积
46
SO_LINGER选项
l_onoff/l_linger、强制/优雅关闭
LINGER
关闭
47
SO_KEEPALIVE选项
保活探测、TCP_KEEPIDLE等
保活
KEEPALIVE
48
SO_RCVBUF/SO_SNDBUF
缓冲区大小设置、系统限制
缓冲区
大小
49
I/O多路复用实战
使用epoll实现简单HTTP服务器
epoll
HTTP
50
HTTP协议解析
请求行/头部/体解析、响应构造
HTTP
解析
51
HTTP服务器实现
GET方法、静态文件、404处理
服务器
静态
52
HTTP客户端实现
socket实现GET请求、响应解析
客户端
GET
53
HTTPS基础
SSL/TLS简介、OpenSSL基本使用
SSL
TLS
54
OpenSSL集成
SSL_CTX创建、SSL握手、加密传输
OpenSSL
握手
55
HTTPS服务器
OpenSSL实现HTTPS服务器、证书加载
HTTPS
证书
56
HTTPS客户端
OpenSSL客户端、证书验证
客户端
验证
57
WebSocket握手
协议、HTTP Upgrade、Sec-WebSocket-Key
WebSocket
握手
58
WebSocket数据帧
帧格式、掩码、数据分片
数据帧
掩码
59
WebSocket服务器
实现简单WebSocket服务器、消息收发
服务器
WS
60
WebSocket客户端
客户端实现、连接建立与关闭
客户端
WS
61
JSON解析
cJSON库集成、构造与解析、网络传输
JSON
cJSON
62
Protobuf使用
Protocol Buffers